// pages/user/invite-share/invite-share.ts
import { spreadBanner } from '../../../api/user.js';
import userManager from '../../../utils/userManager.js';
import { PAGE_LOGIN } from '../../../config/pages.js';

Page({
  /**
   * 页面的初始数据
   */
  data: {
    inviteCode: '',
    shareUrl: '',
    posterUrl: '', // 海报图片URL
    uid: 0, // 用户ID
    loading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options: any) {
    // 获取用户信息并设置邀请码
    this.initUserInfo();
    // 获取推广海报
    this.getSpreadPoster();
  },

  /**
   * 初始化用户信息
   */
  async initUserInfo() {
    try {
      this.setData({ loading: true });
      
      // 使用 userManager 获取用户信息
      const userInfo = await userManager.getUserInfo();
      
      if (userInfo && userInfo.uid) {
        const uid = userInfo.uid;
        const shareUrl = this.generateShareUrl(uid);
        
        this.setData({
          uid: uid,
          inviteCode: uid.toString(),
          shareUrl: shareUrl,
          loading: false
        });
      } else {
        throw new Error('获取用户信息失败');
      }
    } catch (err) {
      console.error('初始化用户信息失败:', err);
      wx.showToast({
        title: '获取用户信息失败',
        icon: 'none'
      });
      this.setData({ loading: false });
    }
  },

  /**
   * 生成分享链接
   */
  generateShareUrl(uid: number) {
    // 使用 pages.js 中定义的路径
    return `${PAGE_LOGIN}?spread=${uid}`;
  },

  /**
   * 获取推广海报
   */
  getSpreadPoster() {
    spreadBanner()
      .then((res: any) => {
        if (res.data && res.data.url) {
          this.setData({
            posterUrl: res.data.url
          });
        }
      })
      .catch((err: any) => {
        console.error('获取推广海报失败:', err);
      });
  },

  /**
   * 分享到微信
   */
  shareToWechat() {
    // 小程序中通过 onShareAppMessage 处理分享
    // 显示分享引导
    wx.showModal({
      title: '邀请好友',
      content: '点击右上角"..."按钮，将邀请分享给好友或分享到朋友圈',
      showCancel: false,
      confirmText: '知道了'
    });
  },

  /**
   * 复制邀请码
   */
  copyInviteCode() {
    wx.setClipboardData({
      data: this.data.inviteCode,
      success: () => {
        wx.showToast({
          title: '邀请码已复制',
          icon: 'success'
        });
      }
    });
  },

  /**
   * 保存海报到相册
   */
  savePoster() {
    if (!this.data.posterUrl) {
      wx.showToast({
        title: '海报生成中，请稍后',
        icon: 'none'
      });
      return;
    }

    wx.downloadFile({
      url: this.data.posterUrl,
      success: (res) => {
        if (res.statusCode === 200) {
          wx.saveImageToPhotosAlbum({
            filePath: res.tempFilePath,
            success: () => {
              wx.showToast({
                title: '保存成功',
                icon: 'success'
              });
            },
            fail: () => {
              wx.showToast({
                title: '保存失败，请授权相册权限',
                icon: 'none'
              });
            }
          });
        }
      },
      fail: () => {
        wx.showToast({
          title: '下载失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    const code = this.data.inviteCode || this.data.uid;
    return {
      title: '邀请你加入模切材料平台，完成认证即可获得积分奖励！',
      path: `${PAGE_LOGIN}?spread=${code}`,
      imageUrl: this.data.posterUrl || ''
    };
  },

  /**
   * 分享到朋友圈
   */
  onShareTimeline() {
    const code = this.data.inviteCode || this.data.uid;
    return {
      title: '模切材料B2B平台 - 邀请好友赚积分',
      query: `spread=${code}`,
      imageUrl: this.data.posterUrl || ''
    };
  }
});

